package com.mrlv.ht.shiro;

import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authc.credential.SimpleCredentialsMatcher;

import com.mrlv.ht.utils.Enctype;

public class AuthCredential extends SimpleCredentialsMatcher {

	@Override
	public boolean doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) {
		//1.从token拿出用户的用户名密码
		//2.利用hashMd5加密算法，把用户名和密码输入进入得到加密后的密码
		//3.把加密后的密码放回到token，找到shiro的密码校验管理员，让其自动校验
		UsernamePasswordToken loginToken = (UsernamePasswordToken)token;
		String username = loginToken.getUsername();
		String password = String.valueOf(loginToken.getPassword());
		
		//这步是将页面传送过来的用户名账号密码用hashMd5加密
		String enctype = Enctype.md5(password, username);
		System.out.println("authcredential:" + username + password);
		System.out.println("md5:" + enctype);
		loginToken.setPassword(enctype.toCharArray());
		
		//现在loginToken里装的是页面传入的账号+密码 加密后 的密码
		//info,装的是数据库里用户的真实密码，这个正式密码是通过AuthRealm登录校验的时候传过来的
		
		//最后在shiro-spring整合文件中指定一下加密管理类
		return super.doCredentialsMatch(loginToken, info);
	}
}
